﻿/*
CÁC HÀM VỀ TIỀN (LÀM TRÒN, ĐỊNH DẠNG...) - MANH.NGUYEN - 29/06/2011  
*/
function LamTronSo(giaTri, soChuSo, quyTacLamTron) {

    //LÀM TRÒN ĐẾN CHỮ SỐ THẬP PHÂN
    giaTri = Math.floor(giaTri * 1 + 0.50000000001) / 1;

    var a = String(giaTri).split("");

    var tmp = "";
    var j = 1;

    if (a[a.length - soChuSo - 1] != null) {
        // NẾU CHỮ SỐ ĐANG XÉT LỚN HƠN 5 VÀ THEO QUY TẮC THÔNG THƯỜNG
        if (a[a.length - soChuSo] >= 5) {
            if (quyTacLamTron != 'T') {
                //NẾU KHÔNG THEO QUY TẮC BÌNH THƯỜNG THÌ LẤY GIÁ TRỊ CẬN DƯỚI CỦA SỐ ĐÓ
                a[a.length - soChuSo - 1] = String(Math.floor(Number(a[a.length - soChuSo - 1])));
            }
            else {
                // TĂNG CHỮ SỐ TIẾP THEO LÊN 1 ĐƠN VỊ
                a[a.length - soChuSo - 1] = String(Number(a[a.length - soChuSo - 1]) + 1);
                a = Increase(a, soChuSo, j);
            }
        }
        // THÊM CÁC CHỮ SỐ 0 ĐẰNG SAU CHO GIÁ TRỊ ĐƯỢC LÀM TRÒN
        for (i = a.length - 1; i > a.length - soChuSo - 1; i--) {
            a[i] = "0";
        }
    }
    else {
        // XỬ LÝ TRONG TRƯỜNG HỢP 530 000 ~ 1 000 000 (LÀM TRÒN 6 CHỮ SỐ)
        if ((a[a.length - soChuSo] >= 5) && (a.length == soChuSo)) {
            for (i = a.length - 1; i > a.length - soChuSo - 2; i--) {
                a[i] = "0";
            }
            tmp = "1";
        }
        // CÁC SỐ CÒN LẠI CHƯA VƯỢT NGƯỠNG LÀM TRÒN TRẢ VỀ GIÁ TRỊ 0
        // VD: 56 700 ~ 0 (LÀM TRÒN 6 CHỮ SỐ)
        else {
            return 0;
        }
    }

    for (i = 0; i < a.length; i++) {
        tmp = tmp + a[i];
    }

    return Number(tmp);
}

//XỬ LÝ LÀM TRÒN TRONG TRƯỜNG HỢP ĐẶC BIỆT : VD: 6 999 900 000 ~ 7 000 000 000 (LÀM TRÒN 6 CHỮ SỐ)
function Increase(a, n, j) {
    if ((Number(a[a.length - n - j - 1]) != null) && (Number(a[a.length - n - j]) != null) && (Number(a[a.length - n - j]) == 10)) {
        a[a.length - n - j] = "0";
        a[a.length - n - j - 1] = String(Number(a[a.length - n - j - 1]) + 1);
        j++;
        Increase(a, j);
    }
    return a;
}